package com.wtwd.device.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wtwd.device.model.entity.HealthType;
import com.wtwd.device.model.vo.UploadFileVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author mjy
 * @since 2023-08-16
 */
public interface HealthTypeService extends IService<HealthType> {


    Integer HEALTH_TYPE = 1;

    Integer HEALTH_CONTENT = 2;

    /**
     * heathType_ 作为map的key值
     * <p>
     * 此key用于健康类型国际化文件数据存储redis所用key值
     * <p>
     * 存储hash key值=key+类型主键id
     */
    String HEATH_TYPE_KEY_PREFIX = "heathType_";

    /**
     * 分页查询健康类型
     * <p>
     * 暂定只根据名称
     *
     * @param page
     * @param healthType
     * @return
     */
    IPage queryPage(Page<HealthType> page, HealthType healthType);

    /**
     * 鉴别名称是否存在
     * <p>
     * 存在 return true
     * else
     * return false
     *
     * @param exclude （鉴别范围是否不包含当前Key）
     * @param name    需要鉴别的名称--请保证名称一定不能为空
     * @param key     (当exclude==true时必填)
     * @return
     */
    boolean authNameIsExist(boolean exclude, String name, Integer key);

    /**
     * 根据名称查询健康类型
     *
     * @param name
     * @return
     */
    HealthType queryHealthTypeByName(String name);

    /**
     * 删除健康类型
     * 1.删除健康类型的内容
     * 1.移除缓存
     * 2.移除国家化文件
     * 3.删除健康类型
     * <p>
     * 2.删除 健康类型
     * 1.移除缓存
     * 2.移除国际化文件
     * 3.删除健康类型
     *
     * @param id
     * @return
     */
    boolean deleteById(Integer id);

    /**
     * 上传文件
     *
     * @param file
     * @param type
     * @return
     */
    UploadFileVO uploadNationalizedDocument(MultipartFile file, Integer type);

    /**
     * 添加健康类型
     * 1.读取上传的excel文件,以json的形式存入缓存
     * 2.存储健康类型
     *
     * @param healthType
     * @return
     */
    boolean insert(HealthType healthType) throws Exception;


    /**
     * 获取健康内容的缓存key值
     *
     * @param healthTypeId
     * @return
     */
    String getCacheHashKey(Integer healthTypeId);

    /**
     * 根据主键id修改健康类型
     *
     * @param healthType
     * @return
     */
    boolean updateHealthTypeById(HealthType healthType);
}
